package com.simulation.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

public class SimulationConfig {
    @JsonProperty("opcuaServer")
    private OpcuaServerConfig opcuaServer;
    
    @JsonProperty("simulationTemplates")
    private List<SimulationTemplate> simulationTemplates;
    
    @JsonProperty("globalSettings")
    private GlobalSettings globalSettings;

    // Getters and Setters
    public OpcuaServerConfig getOpcuaServer() {
        return opcuaServer;
    }

    public void setOpcuaServer(OpcuaServerConfig opcuaServer) {
        this.opcuaServer = opcuaServer;
    }

    public List<SimulationTemplate> getSimulationTemplates() {
        return simulationTemplates;
    }

    public void setSimulationTemplates(List<SimulationTemplate> simulationTemplates) {
        this.simulationTemplates = simulationTemplates;
    }

    public GlobalSettings getGlobalSettings() {
        return globalSettings;
    }

    public void setGlobalSettings(GlobalSettings globalSettings) {
        this.globalSettings = globalSettings;
    }

    public static class OpcuaServerConfig {
        private String endpoint;
        private String namespaceUri;
        private String rootPath;

        // Getters and Setters
        public String getEndpoint() {
            return endpoint;
        }

        public void setEndpoint(String endpoint) {
            this.endpoint = endpoint;
        }

        public String getNamespaceUri() {
            return namespaceUri;
        }

        public void setNamespaceUri(String namespaceUri) {
            this.namespaceUri = namespaceUri;
        }

        public String getRootPath() {
            return rootPath;
        }

        public void setRootPath(String rootPath) {
            this.rootPath = rootPath;
        }
    }

    public static class GlobalSettings {
        private Integer defaultCycle;
        private Integer maxConcurrentTasks;
        private String logLevel;
        private Boolean enableMetrics;

        // Getters and Setters
        public Integer getDefaultCycle() {
            return defaultCycle;
        }

        public void setDefaultCycle(Integer defaultCycle) {
            this.defaultCycle = defaultCycle;
        }

        public Integer getMaxConcurrentTasks() {
            return maxConcurrentTasks;
        }

        public void setMaxConcurrentTasks(Integer maxConcurrentTasks) {
            this.maxConcurrentTasks = maxConcurrentTasks;
        }

        public String getLogLevel() {
            return logLevel;
        }

        public void setLogLevel(String logLevel) {
            this.logLevel = logLevel;
        }

        public Boolean getEnableMetrics() {
            return enableMetrics;
        }

        public void setEnableMetrics(Boolean enableMetrics) {
            this.enableMetrics = enableMetrics;
        }
    }
} 